home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / distutils / util.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  9KB  |  325 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __revision__ = '$Id: util.py 59116 2007-11-22 10:14:26Z ronald.oussoren $'
  5. import sys
  6. import os
  7. import string
  8. import re
  9. from distutils.errors import DistutilsPlatformError
  10. from distutils.dep_util import newer
  11. from distutils.spawn import spawn
  12. from distutils import log
  13.  
  14. def get_platform():
  15.     if os.name != 'posix' or not hasattr(os, 'uname'):
  16.         return sys.platform
  17.     
  18.     (osname, host, release, version, machine) = os.uname()
  19.     osname = string.lower(osname)
  20.     osname = string.replace(osname, '/', '')
  21.     machine = string.replace(machine, ' ', '_')
  22.     machine = string.replace(machine, '/', '-')
  23.     if osname[:5] == 'linux':
  24.         return '%s-%s' % (osname, machine)
  25.     elif osname[:5] == 'sunos':
  26.         if release[0] >= '5':
  27.             osname = 'solaris'
  28.             release = '%d.%s' % (int(release[0]) - 3, release[2:])
  29.         
  30.     elif osname[:4] == 'irix':
  31.         return '%s-%s' % (osname, release)
  32.     elif osname[:3] == 'aix':
  33.         return '%s-%s.%s' % (osname, version, release)
  34.     elif osname[:6] == 'cygwin':
  35.         osname = 'cygwin'
  36.         rel_re = re.compile('[\\d.]+')
  37.         m = rel_re.match(release)
  38.         if m:
  39.             release = m.group()
  40.         
  41.     elif osname[:6] == 'darwin':
  42.         get_config_vars = get_config_vars
  43.         import distutils.sysconfig
  44.         cfgvars = get_config_vars()
  45.         macver = os.environ.get('MACOSX_DEPLOYMENT_TARGET')
  46.         if not macver:
  47.             macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET')
  48.         
  49.         if not macver:
  50.             
  51.             try:
  52.                 f = open('/System/Library/CoreServices/SystemVersion.plist')
  53.             except IOError:
  54.                 pass
  55.  
  56.             m = re.search('<key>ProductUserVisibleVersion</key>\\s*' + '<string>(.*?)</string>', f.read())
  57.             f.close()
  58.             if m is not None:
  59.                 macver = '.'.join(m.group(1).split('.')[:2])
  60.             
  61.         
  62.         if macver:
  63.             get_config_vars = get_config_vars
  64.             import distutils.sysconfig
  65.             release = macver
  66.             osname = 'macosx'
  67.             if release + '.' >= '10.4.' and get_config_vars().get('UNIVERSALSDK', '').strip():
  68.                 machine = 'fat'
  69.             elif machine in ('PowerPC', 'Power_Macintosh'):
  70.                 machine = 'ppc'
  71.             
  72.         
  73.     
  74.     return '%s-%s-%s' % (osname, release, machine)
  75.  
  76.  
  77. def convert_path(pathname):
  78.     if os.sep == '/':
  79.         return pathname
  80.     
  81.     if not pathname:
  82.         return pathname
  83.     
  84.     if pathname[0] == '/':
  85.         raise ValueError, "path '%s' cannot be absolute" % pathname
  86.     
  87.     if pathname[-1] == '/':
  88.         raise ValueError, "path '%s' cannot end with '/'" % pathname
  89.     
  90.     paths = string.split(pathname, '/')
  91.     while '.' in paths:
  92.         paths.remove('.')
  93.     if not paths:
  94.         return os.curdir
  95.     
  96.     return apply(os.path.join, paths)
  97.  
  98.  
  99. def change_root(new_root, pathname):
  100.     if os.name == 'posix':
  101.         if not os.path.isabs(pathname):
  102.             return os.path.join(new_root, pathname)
  103.         else:
  104.             return os.path.join(new_root, pathname[1:])
  105.     elif os.name == 'nt':
  106.         (drive, path) = os.path.splitdrive(pathname)
  107.         if path[0] == '\\':
  108.             path = path[1:]
  109.         
  110.         return os.path.join(new_root, path)
  111.     elif os.name == 'os2':
  112.         (drive, path) = os.path.splitdrive(pathname)
  113.         if path[0] == os.sep:
  114.             path = path[1:]
  115.         
  116.         return os.path.join(new_root, path)
  117.     elif os.name == 'mac':
  118.         if not os.path.isabs(pathname):
  119.             return os.path.join(new_root, pathname)
  120.         else:
  121.             elements = string.split(pathname, ':', 1)
  122.             pathname = ':' + elements[1]
  123.             return os.path.join(new_root, pathname)
  124.     else:
  125.         raise DistutilsPlatformError, "nothing known about platform '%s'" % os.name
  126.  
  127. _environ_checked = 0
  128.  
  129. def check_environ():
  130.     global _environ_checked
  131.     if _environ_checked:
  132.         return None
  133.     
  134.     if os.name == 'posix' and not os.environ.has_key('HOME'):
  135.         import pwd as pwd
  136.         os.environ['HOME'] = pwd.getpwuid(os.getuid())[5]
  137.     
  138.     if not os.environ.has_key('PLAT'):
  139.         os.environ['PLAT'] = get_platform()
  140.     
  141.     _environ_checked = 1
  142.  
  143.  
  144. def subst_vars(s, local_vars):
  145.     check_environ()
  146.     
  147.     def _subst(match, local_vars = local_vars):
  148.         var_name = match.group(1)
  149.         if local_vars.has_key(var_name):
  150.             return str(local_vars[var_name])
  151.         else:
  152.             return os.environ[var_name]
  153.  
  154.     
  155.     try:
  156.         return re.sub('\\$([a-zA-Z_][a-zA-Z_0-9]*)', _subst, s)
  157.     except KeyError:
  158.         var = None
  159.         raise ValueError, "invalid variable '$%s'" % var
  160.  
  161.  
  162.  
  163. def grok_environment_error(exc, prefix = 'error: '):
  164.     if hasattr(exc, 'filename') and hasattr(exc, 'strerror'):
  165.         if exc.filename:
  166.             error = prefix + '%s: %s' % (exc.filename, exc.strerror)
  167.         else:
  168.             error = prefix + '%s' % exc.strerror
  169.     else:
  170.         error = prefix + str(exc[-1])
  171.     return error
  172.  
  173. _wordchars_re = None
  174. _squote_re = None
  175. _dquote_re = None
  176.  
  177. def _init_regex():
  178.     global _wordchars_re, _squote_re, _dquote_re
  179.     _wordchars_re = re.compile('[^\\\\\\\'\\"%s ]*' % string.whitespace)
  180.     _squote_re = re.compile("'(?:[^'\\\\]|\\\\.)*'")
  181.     _dquote_re = re.compile('"(?:[^"\\\\]|\\\\.)*"')
  182.  
  183.  
  184. def split_quoted(s):
  185.     if _wordchars_re is None:
  186.         _init_regex()
  187.     
  188.     s = string.strip(s)
  189.     words = []
  190.     pos = 0
  191.     while s:
  192.         m = _wordchars_re.match(s, pos)
  193.         end = m.end()
  194.         if end == len(s):
  195.             words.append(s[:end])
  196.             break
  197.         
  198.         if s[end] in string.whitespace:
  199.             words.append(s[:end])
  200.             s = string.lstrip(s[end:])
  201.             pos = 0
  202.         elif s[end] == '\\':
  203.             s = s[:end] + s[end + 1:]
  204.             pos = end + 1
  205.         elif s[end] == "'":
  206.             m = _squote_re.match(s, end)
  207.         elif s[end] == '"':
  208.             m = _dquote_re.match(s, end)
  209.         else:
  210.             raise RuntimeError, "this can't happen (bad char '%c')" % s[end]
  211.         if m is None:
  212.             raise ValueError, 'bad string (mismatched %s quotes?)' % s[end]
  213.         
  214.         (beg, end) = m.span()
  215.         s = s[:beg] + s[beg + 1:end - 1] + s[end:]
  216.         pos = m.end() - 2
  217.         if pos >= len(s):
  218.             words.append(s)
  219.             break
  220.             continue
  221.     return words
  222.  
  223.  
  224. def execute(func, args, msg = None, verbose = 0, dry_run = 0):
  225.     if msg is None:
  226.         msg = '%s%r' % (func.__name__, args)
  227.         if msg[-2:] == ',)':
  228.             msg = msg[0:-2] + ')'
  229.         
  230.     
  231.     log.info(msg)
  232.     if not dry_run:
  233.         apply(func, args)
  234.     
  235.  
  236.  
  237. def strtobool(val):
  238.     val = string.lower(val)
  239.     if val in ('y', 'yes', 't', 'true', 'on', '1'):
  240.         return 1
  241.     elif val in ('n', 'no', 'f', 'false', 'off', '0'):
  242.         return 0
  243.     else:
  244.         raise ValueError, 'invalid truth value %r' % (val,)
  245.  
  246.  
  247. def byte_compile(py_files, optimize = 0, force = 0, prefix = None, base_dir = None, verbose = 1, dry_run = 0, direct = None):
  248.     if direct is None:
  249.         if __debug__:
  250.             pass
  251.         direct = optimize == 0
  252.     
  253.     if not direct:
  254.         
  255.         try:
  256.             mkstemp = mkstemp
  257.             import tempfile
  258.             (script_fd, script_name) = mkstemp('.py')
  259.         except ImportError:
  260.             mktemp = mktemp
  261.             import tempfile
  262.             script_fd = None
  263.             script_name = mktemp('.py')
  264.  
  265.         log.info("writing byte-compilation script '%s'", script_name)
  266.         if not dry_run:
  267.             if script_fd is not None:
  268.                 script = os.fdopen(script_fd, 'w')
  269.             else:
  270.                 script = open(script_name, 'w')
  271.             script.write('from distutils.util import byte_compile\nfiles = [\n')
  272.             script.write(string.join(map(repr, py_files), ',\n') + ']\n')
  273.             script.write('\nbyte_compile(files, optimize=%r, force=%r,\n             prefix=%r, base_dir=%r,\n             verbose=%r, dry_run=0,\n             direct=1)\n' % (optimize, force, prefix, base_dir, verbose))
  274.             script.close()
  275.         
  276.         cmd = [
  277.             sys.executable,
  278.             script_name]
  279.         if optimize == 1:
  280.             cmd.insert(1, '-O')
  281.         elif optimize == 2:
  282.             cmd.insert(1, '-OO')
  283.         
  284.         spawn(cmd, dry_run = dry_run)
  285.         execute(os.remove, (script_name,), 'removing %s' % script_name, dry_run = dry_run)
  286.     else:
  287.         compile = compile
  288.         import py_compile
  289.         for file in py_files:
  290.             if file[-3:] != '.py':
  291.                 continue
  292.             
  293.             if not __debug__ or 'c':
  294.                 pass
  295.             cfile = file + 'o'
  296.             dfile = file
  297.             if prefix:
  298.                 if file[:len(prefix)] != prefix:
  299.                     raise ValueError, "invalid prefix: filename %r doesn't start with %r" % (file, prefix)
  300.                 
  301.                 dfile = dfile[len(prefix):]
  302.             
  303.             if base_dir:
  304.                 dfile = os.path.join(base_dir, dfile)
  305.             
  306.             cfile_base = os.path.basename(cfile)
  307.             if direct:
  308.                 if force or newer(file, cfile):
  309.                     log.info('byte-compiling %s to %s', file, cfile_base)
  310.                     if not dry_run:
  311.                         compile(file, cfile, dfile)
  312.                     
  313.                 else:
  314.                     log.debug('skipping byte-compilation of %s to %s', file, cfile_base)
  315.             newer(file, cfile)
  316.         
  317.  
  318.  
  319. def rfc822_escape(header):
  320.     lines = string.split(header, '\n')
  321.     lines = map(string.strip, lines)
  322.     header = string.join(lines, '\n' + '        ')
  323.     return header
  324.  
  325.